#include <my_header.h>
#include <string.h>
#define BUF_SIZE 4096

/* Usage: mkfifo 创建管道文件 
 * 编写C程序A和B，A和B通过管道进行通信：
 * 程序A先后执行3次printf("Helloworld\n");
 * 第一次显示在A的标准输出当中；
 * 第二次显示在B的标准输出当中；
 * 第三次显示在A的标准输出当中。
 * */
int main(void){    
    // 显示在A的标准输出
    printf("Helloworld\n");
    sleep(1);

    // 显示在B的标准输出
    int fd_pipe = mkfifo("data.pipe", 0644);
    ERROR_CHECK(fd_pipe, -1, "fd_pipe");
    
    int fd_open = open("data.pipe", O_WRONLY);
    ERROR_CHECK(fd_open, -1, "fd_open");
    
    int saved_stdout = dup(STDOUT_FILENO); 
    
    dup2(fd_open, STDOUT_FILENO);
    printf("Helloworld\n");
    sleep(1);

    // 显示在A的标准输出
    dup2(saved_stdout, STDOUT_FILENO);
    close(fd_pipe);
    close(fd_open);
    close(saved_stdout);
    printf("Helloworld");

    return 0;
} 
